import { reqCartList,reqDeleteCartGoodsBySkuId,reqUpdateCheckedBySkuId } from "@/api"
export default {
	namespaced:true,
	actions:{
		//获取购物车列表数据
		async getCartList(context){
			let result = await reqCartList() 
			if(result.code == 200){
				// console.log("购物车数据======>",result.data);
				context.commit('GETCARTLIST',result.data);
			}
		},
	    //删除购物车某个商品
		async deleteCartGoodsBySkuId(context,skuId){
		   let result = await reqDeleteCartGoodsBySkuId(skuId); 
		   if (result.code == 200) {
			   return "ok";
		  } else {
			   return Promise.reject(new Error("faile"));
		  } 	
		},
		 //修改购物车某一个商品的选中状态
		 async updateCheckedBySkuId({ context }, { skuId, isChecked }) {
			let result = await reqUpdateCheckedBySkuId(skuId, isChecked);
			if (result.code == 200) {
			  return "ok";
			} else {
			  return Promise.reject(new Error("faile"));
			}
		},
		 //删除全部勾选的产品
		 deleteAllCheckedCart({ dispatch, getters }) {
			//context:小仓库，commit【提交mutations修改state】 getters【计算属性】 dispatch【派发action】 state【当前仓库数据】
			//获取购物车中全部的产品（是一个数组）
			let PromiseAll = [];
			getters.cartList.cartInfoList.forEach((item) => {
			  let promise = item.isChecked == 1 ? dispatch("deleteCartGoodsBySkuId", item.skuId) : "";
			  //将每一次返回的Promise添加到数组当中
			  PromiseAll.push(promise);
			});
			//只要全部的p1|p2....都成功，返回结果即为成功
			//如果有一个失败，返回即为失败结果
			return Promise.all(PromiseAll);
		},
		 //修改全部商品的选中状态
		 updateAllCartIsChecked({ dispatch, state }, isChecked) {
			//数组
			let promiseAll = [];
			state.cartList[0].cartInfoList.forEach((item) => {
			  let promise = dispatch("updateCheckedBySkuId", {
				skuId: item.skuId,
				isChecked,
			  });
			  promiseAll.push(promise);
			});
			//最终返回结果
			return Promise.all(promiseAll);
		},

	},

	mutations:{
		GETCARTLIST(state,cartList){
			state.cartList = cartList; 	
		} 
	},

	state:{
		cartList:[]
	},

	getters:{
		cartList(state){
           return state.cartList[0] || {}
		},

	},

}